package net.androidstudy.koreabeach;

import java.util.List;


import android.content.Context;
import android.graphics.drawable.Drawable;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;

public class KoreaBeachMap extends MapActivity implements LocationListener{
    MapView mapview;
    MapController mc ;	    //지도에 뿌릴 데이터를 가지고 있는 객체를 저장하는 객체
    List<Overlay> itemlist;
    HelloItemOverlay hio; // 이미지와 데이터를 저장하기위해서 선언
    Drawable drawable;//이미지를 res-drawable 폴더에서 불러와서 저장
    double  wido;
    double  kyungdo;
    String title;
    float [] results =new float[3];
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map);
        
        mapview =(MapView)findViewById(R.id.mapView1);
        //객체 생성- 모든 객체에 대한 이미지를 불러옴
        itemlist = mapview.getOverlays();     
        
        //지도를 내마음대로 저장하기위한 객체 선언
        mc = mapview.getController();

        //위성으로 지도를 보고싶다면        
        mapview.setSatellite(true);
        
        //지도축소확대
        mapview.setBuiltInZoomControls(true);
        //위도와 경도 추출
        KoreaBeachBean kbean =new KoreaBeachBean();
		kbean = KoreaAreaBeach.beanVector.get(KoreaAreaBeach.index);
        
		wido = Double.parseDouble(kbean.getWido().trim());
		kyungdo = Double.parseDouble(kbean.getKyungdo().trim());//
		title = kbean.getTitle();
       
		
		
		//이미지를 저장하기 위해서 객체 선언
        drawable = this.getResources().getDrawable(R.drawable.icon);
        //데이터를 저장하기 위해서 객체 생성
        hio = new HelloItemOverlay(drawable, this);
        //데이터를 저장 하는 메소드 호출
        GeoPoint point =new GeoPoint((int)(wido), 
        		(int)(kyungdo));
        hio.addOverItem(new OverlayItem(point,
        		title, "구로 디지털 단지3번출구에서 300m"));
        
        itemlist.add(hio);
        
		
        //위치기반 서비스를 사용하기위한 객체를 선언
        LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        //이벤트 부착
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5, this);
        
        
    }

    
	@Override
	protected boolean isRouteDisplayed() {
		// TODO Auto-generated method stub
		return false;
	}


	//위성으로부터 gps를 수신받아주는 메소드 
	@Override
	public void onLocationChanged(Location location) {
		//gps수신중이라면
		if(location !=null){
			
			itemlist.removeAll(itemlist);
			   //------------------------내위치--------------------------
	        
	        //위도와 경도를 저장해주는 클래스
	        GeoPoint point =new GeoPoint((int)(location.getLatitude()*1000000), 
	        		(int)(location.getLongitude()*1000000));
	        //해당 지도로 이동하시오
	        mc.animateTo(point);
	        //지도 확대
	        mc.setZoom(17);
	        
	        //이미지를 저장하기 위해서 객체 선언
	        drawable = this.getResources().getDrawable(R.drawable.icon);
	        //데이터를 저장하기 위해서 객체 생성
	        hio = new HelloItemOverlay(drawable, this);
	        //데이터를 저장 하는 메소드 호출
	        hio.addOverItem(new OverlayItem(point,
	        		"에이스테크노타워8차", "구로 디지털 단지3번출구에서 300m"));
	        
	        itemlist.add(hio);
	        
	        
	   //-----------------------상대위치-----------------------------------------
	        
	        
	        drawable = this.getResources().getDrawable(R.drawable.pin);
	        //데이터를 저장하기 위해서 객체 생성
	        hio = new HelloItemOverlay(drawable, this);
	        //데이터를 저장 하는 메소드 호출
	      
	        
	        	//거리 구하는공식
	        	Location.distanceBetween(location.getLatitude(), location.getLongitude(), wido, kyungdo, results);
	        	//거리구한값을 추출
	        	int distance = (int)results[0];
	        	
				hio.addOverItem(new OverlayItem(new GeoPoint((int)(wido*1000000),
						(int)(kyungdo*1000000)), title, "내위치로 부터: " +distance+"m에 있습니다."));
			
	        
	        itemlist.add(hio);	        
		}
	}
	@Override
	public void onProviderDisabled(String provider) {
		// TODO Auto-generated method stub
			}
	@Override
	public void onProviderEnabled(String provider) {
		// TODO Auto-generated method stub
			}
	@Override
	public void onStatusChanged(String provider, int status, Bundle extras) {
		// TODO Auto-generated method stub
	}

}
